package cn.tedu.canal.handle;

import cn.tedu.canal.pos.CanalStationPO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import top.javatool.canal.client.annotation.CanalTable;
import top.javatool.canal.client.handler.EntryHandler;

/**
 * 从canal 同步数据 根据不同的sql insert delete update
 * 调用这个处理器中不同的方法
 * 1. 容器bean对象 方便容器中业务注入使用
 * 2. 实现一个canal接口 完成固定格式 CUD 方法编写 (接口通过泛型告知 对应PO)
 */
@Component
@Slf4j
@CanalTable("charging_station")
public class StationPoHandler implements EntryHandler<CanalStationPO> {

    /*@Autowired
    private RedisTemplate redisTemplate;*/
    //将 insert delete update 重新覆盖写法
    //打印 一下 提示同步信息 哪些数据发生了什么变动 剩下的就是业务
    @Override
    public void insert(CanalStationPO canalStationPO) {
        //添加根据同步信息 执行的自定义业务
        log.info("stationHandler,收到数据库charging_station 发生insert操作:{}",canalStationPO);
        EntryHandler.super.insert(canalStationPO);
    }

    @Override
    public void delete(CanalStationPO canalStationPO) {
        log.info("stationHandler,收到数据库charging_station 发生delete操作:{}",canalStationPO);
        EntryHandler.super.delete(canalStationPO);
    }

    @Override
    public void update(CanalStationPO before, CanalStationPO after) {
        log.info("stationHandler,收到数据库charging_station 发生update操作 before:{}",before);
        log.info("stationHandler,收到数据库charging_station 发生update操作 after:{}",after);
        EntryHandler.super.update(before, after);
    }
}
